// Copyright (c) 2005, Robin Ward
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted 
// provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this list of conditions and the 
// following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice, this list of conditions and 
// the following disclaimer in the documentation and/or other materials provided with the distribution.
//
// Neither the name of the Robotic Jelly nor the names of its contributors may be used to endorse or 
// promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED 
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
// POSSIBILITY OF SUCH DAMAGE.

#import <Cocoa/Cocoa.h>
#import "EditorView.h"
#import "SavePanel.h"

@interface Controller : NSObject
{
	// Our application
    IBOutlet NSApplication *application;

	// Our view
	IBOutlet EditorView *preview;
	
	// Formatting Options
	IBOutlet NSSlider *marginEntry;
	IBOutlet NSTextField *fontInfo;
	IBOutlet NSSlider *opacityEntry;
	
	// Output options 
	IBOutlet NSSlider *quality;	
	IBOutlet NSTextField *filename;
	
	// Progress bar
	IBOutlet NSProgressIndicator *progress;
	
	// Buttons 
	IBOutlet NSButton *importButton;
	IBOutlet NSButton *changeFontButton; 
	IBOutlet NSButton *changeBackgroundButton;
	IBOutlet NSButton *saveJPEGButton;
	
	// About window
	IBOutlet NSWindow *aboutWindow;
	
	NSString *content;
	unsigned int pageNumber;
	
	NSFont *currentFont;
	NSColor *currentColor;
}


// Font related functions
- (IBAction) chooseFont:(id) sender; 
- (void)setCurrentFont:(NSFont *)font;
- (void) setCurrentColor:(NSColor *)color;
- (NSFont *) previewFont;
- (NSColor *) previewColor;
- (void) displayFontInfo;

// For loading
- (void) loadTextFile: (NSString *) filename;
- (IBAction) openTextFile:(id) sender;
- (IBAction) loadBackground:(id) sender;

// When the window is closed
- (BOOL) windowShouldClose:(NSWindow *) sender;


- (IBAction) openCustomAboutWindow:(id) sender;

- (IBAction) preview:(id) sender;
- (IBAction) export:(id) sender;

- (void) saveJPEG:(id) outputDirectory;

- (int) marginWidth;
- (float) opacity;

- (NSString *) textContent;


@end
